.TH std::allocator_traits::construct 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::allocator_traits::construct \- std::allocator_traits::construct

.SH Synopsis
   Defined in header <memory>
   template< class T, class... Args >                                  \fI(since C++11)\fP
   static void construct( Alloc& a, T* p, Args&&... args );            \fI(until C++20)\fP
   template< class T, class... Args >                                  \fI(since C++20)\fP
   static constexpr void construct( Alloc& a, T* p, Args&&... args );

   If possible, constructs an object of type T in allocated uninitialized storage
   pointed to by p, by calling a.construct(p, std::forward<Args>(args)...).

   If the above is not possible (e.g. Alloc does not have the member function
   construct()), then calls

   ::new (static_cast<void*>(p)) T(std::forward<Args>(args)...) \fI(until C++20)\fP
   std::construct_at(p, std::forward<Args>(args)...)            \fI(since C++20)\fP

.SH Parameters

   a       - allocator to use for construction
   p       - pointer to the uninitialized storage on which a T object will be
             constructed
             the constructor arguments to pass to a.construct() or to
             placement-new
   args... - \fI(until C++20)\fP
             std::construct_at()
             \fI(since C++20)\fP

.SH Return value

   \fI(none)\fP

.SH Notes

   This function is used by the standard library containers when inserting, copying, or
   moving elements.

   Because this function provides the automatic fall back to placement new, the member
   function construct() is an optional Allocator requirement since C++11.

.SH See also

   operator new   allocation functions
   operator new[] \fI(function)\fP
   construct      constructs an object in allocated storage
   \fI(until C++20)\fP  \fI(public member function of std::allocator<T>)\fP
   construct_at   creates an object at a given address
   (C++20)        \fI(function template)\fP
